var express = require("express")
var swig = require("swig")
var app = express()
var cookies = require("cookies")
var User = require("./models/user")

//加载数据库模块
const mongoose = require("mongoose")

//加载bodyParser,用来处理post提交过来的数据
var bodyParser = require("body-parser")
//bodyparser配置
app.use(bodyParser.urlencoded({ extended: true }))

//设置静态文件托管
//当用户访问的uel以/public开始,那么直接返回对应的__dirname+'/public'
app.use('/public', express.static(__dirname + '/public'))

//定义当前应用所使用的模板引擎
//第一个参数表示模板名称,第二个参数表示处理模板的方法
app.engine('html', swig.renderFile)
//设置模板引擎所在目录,第一个参数必须是views,第二个参数是目录
app.set("views", "./views")
//注册所使用的模板引擎,第一个参数不变,第二个参数和模板名称一致
app.set("view engine", "html")
//在开发过程中要取消模板缓存
swig.setDefaults({ cache: false })
//加载cookies模块,记录登录状态
// var cookies = require("cookies")
// app.use(function(req,res,next){
//     req.cookies = new cookies(req,res)
// })
app.use(function (req, res, next) {
    req.cookies = new cookies(req, res)
    //解析用户的登录信息
    req.userInfo = {}
    if (req.cookies.get("userInfo")) {
        try {
            req.userInfo = JSON.parse(req.cookies.get("userInfo"))
            //获取当前登录用户的类型,是否是管理员
            User.findById(req.userInfo._id).then(function (userInfo) {
                req.userInfo.isAdmin = Boolean(userInfo.isAdmin)
                // console.log("isAmin:",req.userInfo.isAdmin)
                // next()
            })
            next()
        } catch (e) {
            console.log(e)
            next()
        }

    } else {
       
        next()
    }

})
//根据不同的功能划分模块
app.use('/admin', require("./routers/admin"))
app.use('/api', require('./routers/api'))
app.use('/', require('./routers/main'))


mongoose.connect('mongodb://localhost:27017/blog', { useNewUrlParser: true }, function (err) {
    if (err) {
        console.log("数据库链接失败")
    }
    else {
        console.log("数据库链接成功")
        app.listen(8081)
    }
})

